Flash memory is an electronic non-volatile computer storage apparatus that can be electrically erased and reprogrammed. There are two main types of flash memory, which are named after the NAND and NOR logic gates. In NAND flash memory, cells are organized by word-lines and bit-lines into blocks. A block has a large number of cells (e.g., hundreds of thousands of cells). NAND flash memory may be written and read in blocks or pages which are generally much smaller than the entire device.